package com.evil.enterprise.controller;

import com.evil.account.api.RemoteRoleService;
import com.evil.common.account.dto.role.*;
import com.evil.common.core.entity.R;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 角色接口
 *
 * @author liyang
 * @date 2022-08-08 00:00
 */
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/role")
public class RoleController {

    private final RemoteRoleService remoteRoleService;

    /**
     * 角色基础信息列表
     *
     * @param rolePageReqDTO rolePageReqDTO
     * @return R
     */
    @PostMapping("/bases")
    public R<List<RoleBaseRespDTO>> bases(@Validated @RequestBody RolePageReqDTO rolePageReqDTO) {
        rolePageReqDTO.setEnterpriseId(null);
        return R.success(remoteRoleService.roleBases(rolePageReqDTO));
    }

    /**
     * 新增角色
     *
     * @param addRoleReqDTO addRoleReqDTO
     * @return R
     */
    @PostMapping("/add")
    public R<?> addRole(@Validated @RequestBody AddRoleReqDTO addRoleReqDTO) {
        remoteRoleService.add(addRoleReqDTO);
        return R.success();
    }

    /**
     * 修改角色
     *
     * @param modifyRoleReqDTO modifyRoleReqDTO
     * @return R
     */
    @PostMapping("/update")
    public R<?> modifyRole(@Validated @RequestBody ModifyRoleReqDTO modifyRoleReqDTO) {
        remoteRoleService.modify(modifyRoleReqDTO);
        return R.success();
    }

    /**
     * 删除角色
     *
     * @param deleteRoleReqDTO deleteRoleReqDTO
     * @return R
     */
    @PostMapping("/delete")
    public R<?> deleteRole(@Validated @RequestBody DeleteRoleReqDTO deleteRoleReqDTO) {
        remoteRoleService.delete(deleteRoleReqDTO);
        return R.success();
    }

    /**
     * 禁用启用角色
     *
     * @param enableRoleReqDTO enableRoleReqDTO
     * @return R
     */
    @PostMapping("/is/enable")
    public R<?> isEnableRole(@Validated @RequestBody EnableRoleReqDTO enableRoleReqDTO) {
        remoteRoleService.isEnable(enableRoleReqDTO);
        return R.success();
    }
}
